package com.sc.nft.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sc.nft.entity.UserEquityPropsLog;
import com.sc.nft.entity.vo.EquityPropsGetLogPageVO;
import com.sc.nft.entity.vo.EquityPropsUseLogPageVO;
import com.sc.nft.entity.vo.MallEquityPropsGetLogPageVO;
import com.sc.nft.entity.vo.PageEquityPropsLogVO;
import com.sc.nft.enums.UserEquityPropsGetTypeEnum;
import com.sc.nft.enums.UserEquityPropsUseTypeEnum;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.Date;
import java.util.List;

/**
 * 权益道具记录表(sc_user_equity_props_log)数据Mapper
 *
 * @author Sun
 * @description 由 Mybatisplus Code Generator 创建
 * @since 2023-03-28 10:28:52
 */
@Mapper
public interface UserEquityPropsLogMapper extends BaseMapper<UserEquityPropsLog> {

    /**
     * 分页查询权益道具记录
     *
     * @param page
     * @param isConsume
     * @return
     */
    Page<PageEquityPropsLogVO> getPageEquityPropsLog(Page page, @Param("isConsume") Integer isConsume, @Param("userId") Long userId);

    /**
     * 分页获取道具卡获取记录
     *
     * @param page
     * @param userId
     * @param firstTitle
     * @param getType
     * @param startTime
     * @param endTime
     * @return
     */
    Page<EquityPropsGetLogPageVO> getLog(Page page, @Param("propsId") Long propsId, @Param("userId") Long userId, @Param("firstTitle") String firstTitle, @Param("getType") UserEquityPropsGetTypeEnum getType, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 分页获取道具卡使用记录
     *
     * @param page
     * @param userId
     * @param firstTitle
     * @param useType
     * @param startTime
     * @param endTime
     * @return
     */
    Page<EquityPropsUseLogPageVO> useLog(Page page, @Param("userId") Long userId, @Param("firstTitle") String firstTitle, @Param("useType") UserEquityPropsUseTypeEnum useType, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 分页获取新商城道具获取记录
     *
     * @param page
     * @param userId
     * @param getType
     * @return
     */
    Page<MallEquityPropsGetLogPageVO> mallPropsGetLog(Page page, @Param("userId") Long userId, @Param("getType") int getType);

    @Select("SELECT * FROM sc_user_equity_props_log WHERE is_delete = 0 AND id < #{lastMinId} ORDER BY id DESC LIMIT #{pageSize}")
    List<UserEquityPropsLog> selectByLastMinId(@Param("lastMinId") Long lastMinId, @Param("pageSize") int pageSize);
}
